package com.hou.core;

import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.CharsetUtil;

import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;

public class ConvertDemo {

    public static void main(String[] args) {

    }

    /**
     * 常用数据类型转换
     */
    public void convertTest01(){
        // 类型转换
        Convert.toStr(1);
        // 数组转换
        String[] b = { "1", "2", "3", "4" };
        String str = Convert.toStr(b);
        Integer[] intArray = Convert.toIntArray(b);
        // 转日期
        String a = "2021-04-06";
        Date value = Convert.toDate(a);
        // 转集合
        Object[] c = {"a", "你", "好", "", 1};
        List<?> list = Convert.toList(c);
        // 转指定泛型集合,其他类型元素都会转成指定泛型
        Object[] d = { "a", "你", "好", "", 1 };
        List<String> strings = Convert.toList(String.class, d);
    }

    // 字符串 16进制互相转换
    public void convertTest02(){
        // 转换必须传入编码格式
        String a="侯";
        String hex = Convert.toHex(a, CharsetUtil.CHARSET_UTF_8);
        System.out.println(hex);
        String raw = Convert.hexToStr(hex, CharsetUtil.CHARSET_UTF_8);
        System.out.println(raw);
    }

    // Unicode 字符串互相转换
    public void convertTest03(){
        String a = "平安";
        String unicode = Convert.strToUnicode(a);
        System.out.println(unicode);// \u5e73\u5b89
        String raw = Convert.unicodeToStr(unicode);
    }

    public void convertTest04(){
        // 编码转换
        String a = "我不是乱码";
        //转换后result为乱码, 从UTF_8转为ISO_8859_1
        String result = Convert.convertCharset(a, CharsetUtil.UTF_8, CharsetUtil.ISO_8859_1);
        String raw = Convert.convertCharset(result, CharsetUtil.ISO_8859_1, "UTF-8");
        System.out.println(raw);
    }

    public void convertTest05(){
        // 时间单位转换，年月日时分秒换算等
        long a = 4535345;
        //秒->分
        long minutes = Convert.convertTime(a, TimeUnit.MILLISECONDS, TimeUnit.MINUTES);
    }

    public void convertTest06(){
        // 金额大小写转换,只能转到分，再后面小数会被忽略
        double a = 67556.32;
        //陆万柒仟伍佰伍拾陆元叁角贰分
        String digitUppercase = Convert.digitToChinese(a);// 默认是繁体
        // 是否使用繁体字
        String numberToChinese = Convert.numberToChinese(a, false);
        // 六万七千五百五十六点三二
        System.out.println(numberToChinese);
    }

    /**
     * 半角符号和全角符号转换
     * 全角：占两个标注字符的位置
     * 半角：占一个标注字符的位置
     * 简单说：全角看起来有空格，半角没有
     */
    public void convertTest07(){
        // 半角->全角
        String a = "1,2.3456789";
        String sbc = Convert.toSBC(a);
        System.out.println(sbc);
        // 全角->半角
        String b = "１２３４５６７８９";
        String dbc = Convert.toDBC(b);
        System.out.println(dbc);
    }
}
